#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
char get_first(){
    char c = '\0';
    while ((c=getchar())!='\n'){
        if (!isspace(c))
            break;
    }
    while (getchar()!='\n')
        continue;
    return c;
}
void print_menu() {
    printf("Enter the operation of your choice:\n");
    printf("a. add\t\ts. subtract\n");
    printf("m. multiply\t\td. divide\n");
    printf("q. quit\n");
}

char get_operation() {
    char c;
    do {
        print_menu();
        c=get_first();
        if (!(c == 'a' || c == 's' || c == 'm' || c == 'd' || c == 'q')) {
            printf("请选着提供的选项\n");
        } else {
            return c;
        }
    } while (true);

}

double get_number() {
    double number;
    do {
        int s = scanf("%lf", &number);
        if (s == 1) {
            //清除\n
            getchar();
            return number;
        } else {
            //清除缓冲中的字符
            char c;
            while ((c=getchar())!='\n'){
                putchar(c);
            }
            printf("不是一个数字,请输入一个数值！\n");
        }
    } while (true);
}

int main() {
    char o;
    double d1;
    double d2;
    while ((o = get_operation()) != 'q') {
        printf("输入第一个数值：");
        d1 = get_number();
        printf("输入第二个数值：");
        d2 = get_number();
        switch (o) {
            case 'a':
                printf("%.2f+%.2f=%.2f\n", d1, d2, d1 + d2);
                break;
            case 's':
                printf("%.2f-%.2f=%.2f\n", d1, d2, d1 - d2);
                break;
            case 'm':
                printf("%.2f*%.2f=%.2f\n", d1, d2, d1 * d2);
                break;
            case 'd':
                while (d2 == 0.0) {
                    printf("除数不能为0！请重新输入。");
                    d2 = get_number();
                }
                printf("%.2f/%.2f=%.2f\n", d1, d2, d1 / d2);
                break;
        }
    }


    return 0;
}

